The Internet presently comprises billions of web pages interconnected via hyperlinks. Users of the Internet typically use web browsing applications (“browsers”) to navigate among these pages by either selecting and clicking hyperlinks, or by manually entering a “Uniform Resource Locator” (“URL”) which allows the browser to access a particular web page directly. Often times, however, a user wishes to search the Internet for pages containing particular items of information. Because of the size of the Internet, it is impractical for a user to manually browse the Internet searching for relevant pages. Instead, users typically invoke search engines, which are computer applications developed for the purpose of searching the Internet. Search engines typically reside on server machines and accept queries from client users. A search engine is usually associated with an index of web pages, and, in response to a user query, returns a list of pages satisfying the query.
Although a search engine is a powerful tool in itself, primitive search engines struggled to produce relevant or useful results. For example, a query that was satisfied by hundreds or thousands of web pages could be of little value to the user, who may have to manually investigate each page. Some modern search engines, such as Google.com, attempt to “rank” search results by “popularity”, and then to present the search results as a sorted list, so that the user is first presented with the most popular pages, which are presumably the most relevant.
Relevancy, however, is a criterion that is relative to the user. Pages that are generally popular may be of little interest to the user with particularly focused needs. Even the general user, whose needs are not particularly focused, will likely find some less popular pages more relevant than other more popular pages. Users would thus benefit from a way of personalizing the page-ranking process.